package com.ptms.service;

import com.ptms.entity.User;
import com.ptms.vo.ResultVO;

import com.ptms.dto.PasswordChangeDTO;
import java.util.List;

public interface UserService {
    /**
     * 1. 获取当前登录用户信息（无参，依赖 JWT 解析的用户名）
     * @param username 从 Security 上下文获取的当前登录用户名
     * @return 包含用户信息的 ResultVO（code=200 成功，其他码失败）
     */
    ResultVO<User> getCurrentUser(String username);




    /**
     * 3. 更新当前登录用户信息（支持部分字段更新，避免修改关键字段）
     * @param username 当前登录用户名（用于定位用户）
     * @param updateInfo 前端传递的待更新用户信息（如手机号、邮箱等）
     * @return 包含更新后用户信息的 ResultVO（前端同步本地 user 状态）
     */
    ResultVO<User> updateCurrentUser(String username, User updateInfo);

    // 4. 新增：修改用户密码
    ResultVO<Void> changeUserPassword(String username, PasswordChangeDTO passwordChangeDTO);
    /**
     * 查询所有角色为学生的数据
     */
    ResultVO<List<User>> getAllStudents();

    /**
     * 根据校区ID查询相同校区的学生数据
     */
    ResultVO<List<User>> getStudentsByCampusId(Long campusId);

}